﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Atendex.Infraestrutura.Repositórios;
using Castle.ActiveRecord;
using Castle.ActiveRecord.Framework;
namespace Atendex.Testes
{
    internal static class ExtensionRepositorio
    {
        public static void Excluir<T>(this RepositorioGenerico<T> rep, T instancia)
        {
            try
            {
                ConverteParaAR(instancia).Delete();
            }
            catch (ActiveRecordException ex)
            {
                throw new RepositorioException("Houve um erro ao salvar o objeto.", ex);
            }

        }

        private static ActiveRecordBase ConverteParaAR<T>(T instancia)
        {
            ActiveRecordBase instanciaAR = instancia as ActiveRecordBase;
            if (instanciaAR != null) return instanciaAR;
            else throw new RepositorioException("O objeto passado não é do tipo ActiveRecordBase");
        }
    }
}
